# 2.17 动画(移动的猫)
import pygame, sys
from pygame.constants import *

pygame.init()

FPS = 30
# Clock对象可以帮助我们确保程序以某一个最大的FPS运行
# 将会在游戏循环的每一次循环上设置一个小小的暂停，从而确保程序不会运行的太快
fpsClock = pygame.time.Clock()

displaysurf = pygame.display.set_mode((400, 300))
pygame.display.set_caption("动画")

white = (255,255,255)
catImg = pygame.image.load('cat.png')
catx = 10
caty = 10
direction = 'right'

while True:
    # 1、每次循环清除所有的绘画
    displaysurf.fill(white)
    if direction == 'right':
        catx += 5
        if catx == 280:
            direction = 'down'
    elif direction == 'down':
        caty += 5
        if caty == 220:
            direction = 'left'
    elif direction == 'left':
        catx -=5
        if catx == 10:
            direction = 'up'
    elif direction == 'up':
        caty -= 5
        if caty == 10:
            direction = 'right'

    # 2、每次循环时都不会清除之前的绘画
    # 将 图像Surface对象 绘制到 窗口Surface对象 上
    displaysurf.blit(catImg, (catx, caty))

    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    pygame.display.update()
    # 确保游戏按照对应的速度运行(游戏循环的最后一条指令)
    # 原理：根据前一次调用 tick 之后经过了多长事件，来计算需要暂停多长事件(第一次调用tick没有暂停)
    fpsClock.tick(FPS)
